#ifndef _RESAMPLE_H
#define _RESAMPLE_H

#include <stdint.h>

enum resample_type {
    RESAMPLE_TYPE_D_48000_44100,
    RESAMPLE_TYPE_D_64000_8000,
    RESAMPLE_TYPE_D_64000_32000,
    RESAMPLE_TYPE_D_32000_16000,
    RESAMPLE_TYPE_D_16000_8000,
    RESAMPLE_TYPE_D_44100_16000,

    RESAMPLE_TYPE_U_8000_16000,
    RESAMPLE_TYPE_U_8000_64000,
    RESAMPLE_TYPE_U_8000_16000_CVSD,
    RESAMPLE_TYPE_U_16000_32000,
    RESAMPLE_TYPE_U_32000_64000,

    RESAMPLE_TYPE_INVALID,
};

void *resample_init(enum resample_type type, uint8_t channels);
void resample_destroy(void *handle);
int resample_exec(void *handle, const uint8_t *indata, uint32_t *insize, uint8_t **out_buf, uint32_t *out_length);
enum resample_type resample_get_type(uint32_t in_sample_rate, uint32_t out_sample_rate);

#endif  // _RESAMPLE_H

